Autogenerated HTML docs for v1.5.4-rc0-36-g7680 
diff --git a/technical/pack-protocol.txt b/technical/pack-protocol.txt new file mode 100644 index 0000000..9cd48b4 --- /dev/null +++ b/technical/pack-protocol.txt 
@@ -0,0 +1,41 @@ +Pack transfer protocols +======================= + +There are two Pack push-pull protocols. + +upload-pack (S) | fetch/clone-pack (C) protocol: + +	# Tell the puller what commits we have and what their names are +	S: SHA1 name +	S: ... +	S: SHA1 name +	S: # flush -- it's your turn +	# Tell the pusher what commits we want, and what we have +	C: want name +	C: .. +	C: want name +	C: have SHA1 +	C: have SHA1 +	C: ... +	C: # flush -- occasionally ask "had enough?" +	S: NAK +	C: have SHA1 +	C: ... +	C: have SHA1 +	S: ACK +	C: done +	S: XXXXXXX -- packfile contents. + +send-pack | receive-pack protocol. + +	# Tell the pusher what commits we have and what their names are +	C: SHA1 name +	C: ... +	C: SHA1 name +	C: # flush -- it's your turn +	# Tell the puller what the pusher has +	S: old-SHA1 new-SHA1 name +	S: old-SHA1 new-SHA1 name +	S: ... +	S: # flush -- done with the list +	S: XXXXXXX --- packfile contents.